
#cmake最低版本要求
cmake_minimum_required (VERSION 2.8)
#引入共通内容
#include(../../common.cmake)

########################
#常用预定义变量
#PROJECT_SOURCE_DIR：工程的根目录
#PROJECT_BINARY_DIR：运行 cmake 命令的目录，通常是 ${PROJECT_SOURCE_DIR}/build
#PROJECT_NAME：返回通过 project 命令定义的项目名称
#CMAKE_CURRENT_SOURCE_DIR：当前处理的 CMakeLists.txt 所在的路径
#CMAKE_CURRENT_BINARY_DIR：target 编译目录
#CMAKE_CURRENT_LIST_DIR：CMakeLists.txt 的完整路径
#CMAKE_CURRENT_LIST_LINE：当前所在的行
#CMAKE_MODULE_PATH：定义自己的 cmake 模块所在的路径，SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)，然后可以用INCLUDE命令来调用自己的模块
#EXECUTABLE_OUTPUT_PATH：重新定义目标二进制可执行文件的存放位置
#LIBRARY_OUTPUT_PATH：重新定义目标链接库文件的存放位置
#CMAKE_MAJOR_VERSION：cmake 主版本号，比如 3.4.1 中的 3
#CMAKE_MINOR_VERSION：cmake 次版本号，比如 3.4.1 中的 4
#CMAKE_PATCH_VERSION：cmake 补丁等级，比如 3.4.1 中的 1
#CMAKE_SYSTEM：系统名称，比如 Linux-­2.6.22
#CMAKE_SYSTEM_NAME：不包含版本的系统名，比如 Linux
#CMAKE_SYSTEM_VERSION：系统版本，比如 2.6.22
#CMAKE_SYSTEM_PROCESSOR：处理器名称，比如 i686
#UNIX：在所有的类 UNIX 平台下该值为 TRUE，包括 OS X 和 cygwin
#WIN32：在所有的 win32 平台下该值为 TRUE，包括 cygwin
########################

#编译模式
set(CMAKE_BUILD_TYPE "Debug")
#执行shell命令，获取当前路径
execute_process(
    COMMAND pwd
    OUTPUT_VARIABLE PWD
)
#cmake生成时打印信息
message("build with ${CMAKE_BUILD_TYPE} mode,working direction is ${PWD}")
#DEBUG模式下的编译选项
set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -g")
#RELEASE下的编译选项
set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3")
#项目名
project(PROJECT)
#设置可以使用相对路径
SET(CMAKE_USE_RELATIVE_PATHS "ON")
#设置详细输出
SET(CMAKE_VERBOSE_MAKEFILE "ON")
#设置编译选项
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --std=c++11 -Wall")

#搜索所有源码，保存至变量；非递归搜索，文件有增删时需要重新生成makefile
#例子:
#aux_source_directory(. SOURCES)
aux_source_directory(. SOURCES)
aux_source_directory(.\dir SOURCES)
aux_source_directory(.\dir\src SOURCES)
#也可以这么写
#file(GLOB SOURCES "*.cpp" "src/*.cpp")

#编译结果是静态库，输出到../lib
add_library(PROJECT STATIC ${SOURCES})
set(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/lib)

#头文件所在路径
include_directories(./
.\dir\inc
)
# 如果有子项目的话请在此添加文件夹名
#add_subdirectory(subproject)
#添加依赖的库路径
#link_directories(path)
#添加依赖的库名
#target_link_libraries( PROJECT
#    PRIVATE pthread
#)
